﻿using System;
using System.ServiceProcess;
using System.Threading;


namespace AtualizaCadastroNFeService
{
    public partial class Service1 : ServiceBase
    {
        Timer timer1;

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            try
            {
                
                LeitorNFe.Util.GravarLog("Serviço Iniciado", "ATUALIZACADASTRONFE");

                int intervalo = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["IntervaloLeitura"]);

                LeitorNFe.Util.GravarLog(string.Format("Execução a cada {0} segundos",intervalo), "ATUALIZACADASTRONFE");

                intervalo = intervalo * 1000;

                timer1 = new Timer(new TimerCallback(timer1_Tick), null, 1000, intervalo);
            }
            catch (Exception ex)
            {
                LeitorNFe.Util.GravarLog(ex.Message, "ATUALIZACADASTRONFE");
            }
            

            //timer1 = new Timer(new TimerCallback(timer1_Tick), null, 15000, 60000);  

        }

        protected override void OnStop()
        {
            LeitorNFe.Util.GravarLog("Serviço Parado", "ATUALIZACADASTRONFE");

            //StreamWriter vWriter = new StreamWriter(@"c:\testeServico.txt", true);
 
            //vWriter.WriteLine("Servico Parado: " + DateTime.Now.ToString());
            //vWriter.Flush();
            //vWriter.Close();

        }

        private void timer1_Tick(object sender)
        {
            try
            {
                string path = System.Configuration.ConfigurationSettings.AppSettings["xmlPath"];
                string pathLidos = System.Configuration.ConfigurationSettings.AppSettings["xmlLidosPath"];
                string urlExchange = System.Configuration.ConfigurationSettings.AppSettings["urlExchange"];
                string domain = System.Configuration.ConfigurationSettings.AppSettings["domain"];
                string user = System.Configuration.ConfigurationSettings.AppSettings["user"];
                string pwd = System.Configuration.ConfigurationSettings.AppSettings["pwd"];

                LeitorNFe.Util.GravarLog(string.Format("Iniciando a leitura do email [{0}] ", path), "ATUALIZACADASTRONFE");
                LeitorNFe.LeitorEmail lmail = new LeitorNFe.LeitorEmail(domain, user, pwd, urlExchange);
                lmail.Baixar(path);

                LeitorNFe.Util.GravarLog(string.Format("Iniciando a leitura no diretório [{0}] ", path), "ATUALIZACADASTRONFE");
                LeitorNFe.LeitorNFe lnfe = new LeitorNFe.LeitorNFe();
                lnfe.LerDiretorio(path, pathLidos);
            }
            catch (Exception ex)
            {
                LeitorNFe.Util.GravarLog(ex.Message, "ATUALIZACADASTRONFE");
            }

            //StreamWriter vWriter = new StreamWriter(@"c:\testeServico.txt", true);
            //vWriter.WriteLine("Servico Rodando: " + DateTime.Now.ToString());
            //vWriter.Flush();
            //vWriter.Close();

        }

    }
}
